package main

import (
	"fmt"
	beego "github.com/beego/beego/v2/server/web"
	"kong-social-api/commons/filter"
	"kong-social-api/commons/global"
	"kong-social-api/commons/initialization"
	_ "kong-social-api/routers"
	"kong-social-api/utils"
)

func main() {
	// 获取环境信息
	global.Env = beego.BConfig.RunMode
	// 设置日志的级别，默认是prod环境下的error级别，含义：只有程序报错了，才会把日志写入到文件或控制台中
	loggerLevel := "error"
	// 根据环境来设置日志级别
	if global.Env == "dev" {
		// 如果是开发环境，我们要方便调试我们代码。所以建议使用debug或者info都可以
		loggerLevel = "debug"

	}
	// 初始化配置文件信息
	initialization.InitConfig()
	// 初始化日志
	initialization.InitLogger(loggerLevel)
	// 初始化redis数据库
	initialization.InitRedis()
	// 初始化mysql数据库
	initialization.InitMySQL()

	// 打印注册路由的信息
	if global.Env == "dev" {
		tree := beego.PrintTree()
		methods := tree["Data"].(beego.M)
		for k, v := range methods {
			fmt.Printf("%s => %v\n", k, v)
		}
	}

	// 全局拦截器--跨域问题
	beego.InsertFilter("/api/*", beego.BeforeRouter, filter.CorsFilter)
	// 白名单验证
	// beego.InsertFilter("/api/*", beego.BeforeRouter, filter.AppidFilter)
	// 登录和不登陆的安全校验token
	beego.InsertFilter("/api/*", beego.BeforeRouter, filter.TokenFilter)
	// 全局拦截器--登录拦截
	beego.InsertFilter("/api/v1/*", beego.BeforeRouter, filter.LoginFilter)

	fmt.Println(utils.Md5("123456"))

	// beego框架的启动和运行
	beego.Run()
}
